package com.prj.ufdm.cloud.ms.auth.bpo;

import java.util.List;
import java.util.Set;
import com.alibaba.fastjson.JSONObject;
import com.prj.ufdm.cloud.ms.auth.model.SysOrgan;
import com.prj.ufdm.cloud.ms.core.bpo.BaseBPO;

public interface SysOrganBPO extends BaseBPO<SysOrgan> {
	
	
    /**
     * DESC: 机构列表转为JSONObject
     * @auther 胡义振
     * @date 2020年1月16日
     * @param listSysOrgan
     * @return
     * @throws Exception 
     * @return
     */
    public List<JSONObject> doExchangeSysOrganListToJson(List<SysOrgan> listSysOrgan) throws Exception;
	
    /**
	 * 删除
	 * @param id
	 * @return
	 */
	public Integer deleteOrganByOrganId(String id) throws Exception;
	
	/**
	 * 递归删除，机构，如果机构下还有人员则不能删除
	 * @param sysOrgan
	 * @return
	 * @throws Exception
	 */
	public int deleteChildrenOrganListByOrganId(SysOrgan sysOrgan) throws Exception;
	
	
    /************* OK ***** OK ***** OK ***** OK ******************/
    


	/**
	 * 根据id查询机构信息
	 * @param id
	 * @return
	 */
	public List<SysOrgan> selectOrganListByOrganId(String id) throws Exception;

	/**
	 * DESC: 根据用户ID，查询用户机构
	 * @auther 胡义振
	 * @date 2020年1月16日
	 * @param sysOrgan
	 * @return
	 * @throws Exception 
	 * @return
	 */
	public SysOrgan selectOrganByUserId(SysOrgan sysOrgan) throws Exception;

	/**
	 * 机构编码查询机构信息
	 * @param organCode
	 * @return
	 * @throws Exception
	 */
	public SysOrgan selectByOrganId(String organId) throws Exception;

	/**
	 * 递归查询子机构
	 * Description: 
	 * @param parentId
	 * @param set
	 * @param num
	 * @return
	 * @throws Exception
	 * @author 
	 * @date 2019年10月12日
	 * @version 1.0
	 */
	public int getChildrenOrgan(String parentId,Set<String> set,int num) throws Exception;
	
	/**
	 * 获取当前机构及所有上级机构
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public List<SysOrgan> getAllParentOrgan(String id) throws Exception;

}
